package com.example.jvm.wheninit;

/**
 * 有多种情况要求类立即初始化, 除了反射获取类型信息，子类初始化，还有
 */
public class MyClass {

    static {
        System.out.println("MyClass static block");
    }

    /**
     * 常量在编译期就被放入常量池，调用常量不会处罚类初始化
     */
    public static final int CONSTANT = 10;

    /**
     * 调用静态字段的时候，包括putstatic getstatic
     */
    public static int myStaticField = 10;

    public static int myStaticField1 = 10;
    /**
     * 实例化的时候，即new
     */
    public MyClass(){
        System.out.println("MyClass constructor");
    }

    /**
     * 调用静态方法的时候: 即 invokestatic
     */
    public static void myStaticMethod() {
        System.out.println("MyClass static method");
    }

}
